feat(cli): fbuild bringup orchestrator scaffold (#697)#711
Conversation
#697. Promotes the bring-up orchestrator to a first-class fbuild command so the end-to-end pipeline stops being split between fbuild (build + flash) and FastLED Python (autoresearch port-resolution + monitor + RPC) — the split is exactly what caused the FastLED/FastLED#3300 LPC845-BRK incident. - fbuild bringup <env> CLI subcommand: --rpc-method / --rpc-payload / --expect-result / --skip-build / --dry-run flags - BringupConfig with default_echo_4242() (FastLED's classic autoresearch baseline) and with_overrides() for CLI overlay - 3-way BringupResult { remote_ok, log_ok, echo_ok, elapsed_ms, details } tuple verbatim from FastLED's autoresearch so every consumer already knows the shape. is_passing() = all-three - Display walks the tuple left-to-right so the user sees where the chain broke - Orchestration skeleton consults the existing fbuild-serial primitives end-to-end: vcom_for_env (#686), family_for_vid_pid (#686), BoardFamily::idle_dtr_rts (#687), BoardFamily::reset_method (#687), BoardFamily::handoff_timing (#691) - --dry-run surfaces the resolved family / vcom / DTR-RTS / handoff timing / RPC config so CI can validate orchestration shape end-to-end without attached hardware 8 unit tests covering: default config + CLI override propagation, is_passing semantics, Display order, dry-run LPC845-BRK end-to-end shape (vcom + family + reset_method + idle_dtr_rts + handoff timing + RPC defaults all reach the report), env-without-vcom- override truthful reporting, non-dry-run stubbed but still informative. Out of scope (follow-up PRs): - Real build phase (today: defer to existing fbuild build) - Real flash phase per BoardFamily (esp32_native / lpc pyocd / rp2040 picotool / teensy halfkay / samd uf2 wires) - Real monitor phase (consume HandoffTiming.boot_drain_ms + open with idle_dtr_rts) - Real JSON-RPC send/receive - Per-board bringup.* keys in board JSON - FastLED's bash autoresearch migrated to thin wrapper Closes #697.
|
Warning Review limit reached
More reviews will be available in 30 minutes and 8 seconds. Learn how PR review limits work. Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file). ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based credits. 🚦 How do rate limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan refill rate. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, the refill rate gradually slows as usage increases. The highest same-day bursts are limited more strictly. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (4)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
#697. Promotes the bring-up orchestrator to a first-class fbuild command so the end-to-end pipeline stops being split between fbuild (build + flash) and FastLED Python (autoresearch port-resolution + monitor + RPC) — the split is exactly what caused the FastLED/FastLED#3300 LPC845-BRK incident.
What ships
fbuild bringup <env>CLI subcommand with--rpc-method/--rpc-payload/--expect-result/--skip-build/--dry-runflagsBringupConfigwithdefault_echo_4242()(FastLED's classic autoresearch baseline) andwith_overrides()for CLI overlayBringupResult { remote_ok, log_ok, echo_ok, elapsed_ms, details }verbatim from FastLED'sautoresearchso every consumer already knows the shape.is_passing()= all-threeDisplaywalks the tuple left-to-right so the user sees where the chain brokevcom_for_env(fbuild-serial: vendor a serial-probe CLI + shared BOARD_FINGERPRINTS table (companion to closed #684, parallel to FastLED #3339) #686),family_for_vid_pid(fbuild-serial: vendor a serial-probe CLI + shared BOARD_FINGERPRINTS table (companion to closed #684, parallel to FastLED #3339) #686),BoardFamily::idle_dtr_rts(fbuild-serial: BoardFamily enum + polymorphic ResetMethod dispatch registry #687),BoardFamily::reset_method(fbuild-serial: BoardFamily enum + polymorphic ResetMethod dispatch registry #687),BoardFamily::handoff_timing(fbuild: standardize flash→monitor handoff timing as per-family HandoffTiming on BoardFamily #691)--dry-runsurfaces the resolved family / vcom / DTR-RTS / handoff timing / RPC config so CI can validate orchestration shape end-to-end without attached hardwareTests — 8 passed
Default config + CLI override propagation,
is_passingsemantics,Displayorder, dry-run LPC845-BRK end-to-end shape (vcom + family + reset_method + idle_dtr_rts + handoff timing + RPC defaults all reach the report), env-without-vcom-override truthful reporting, non-dry-run stubbed but still informative.Out of scope (follow-up PRs)
fbuild build)HandoffTiming.boot_drain_ms+ open withidle_dtr_rts)bringup.*keys in board JSONbash autoresearchmigrated to thin wrapperCloses #697.